NetDocsForLLM/MainWindow.xaml

204 lines
11 KiB
XML

<Window x:Class="NetDocsForLLM.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:local="clr-namespace:NetDocsForLLM"
xmlns:conv="clr-namespace:NetDocsForLLM.Converters"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
mc:Ignorable="d"
Title="NetDocs para LLMs" Height="650" Width="800">
<Window.Resources>
<conv:EnumBooleanConverter x:Key="EnumBooleanConverter"/>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- Encabezado -->
<Border Background="#2c3e50" Padding="15">
<StackPanel>
<TextBlock Text="Generador de Documentación .NET para LLMs"
Foreground="White"
FontSize="22"
HorizontalAlignment="Center"/>
<TextBlock Text="Extraiga y estructure documentación de librerías .NET para uso con modelos de lenguaje"
Foreground="#ecf0f1"
FontSize="12"
HorizontalAlignment="Center"
Margin="0,5,0,0"/>
</StackPanel>
</Border>
<!-- Contenido principal -->
<TabControl Grid.Row="1" Margin="10">
<TabItem Header="Selección de Librería">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Button Content="Seleccionar Archivos DLL..."
Command="{Binding SelectAssembliesCommand}"
Padding="10,5"
Margin="0,0,0,10"/>
<TextBlock Grid.Row="1"
Text="Librerías seleccionadas:"
FontWeight="Bold"
Margin="0,10,0,5"/>
<ListView Grid.Row="2"
ItemsSource="{Binding SelectedAssemblies}"
Margin="0,5">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Name}" FontWeight="Bold"/>
<TextBlock Text="{Binding FilePath}" FontSize="11" TextWrapping="Wrap"/>
</StackPanel>
<Button Grid.Column="1"
Content="X"
Command="{Binding DataContext.RemoveAssemblyCommand, RelativeSource={RelativeSource AncestorType=ListView}}"
CommandParameter="{Binding}"
Margin="5,0,0,0"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button Grid.Row="3"
Content="Analizar y Generar Documentación"
Command="{Binding GenerateDocumentationCommand}"
IsEnabled="{Binding HasSelectedAssemblies}"
Padding="10,5"
Margin="0,10,0,0"
Background="#2980b9"
Foreground="White"/>
</Grid>
</TabItem>
<TabItem Header="Configuración" IsEnabled="{Binding HasSelectedAssemblies}">
<ScrollViewer>
<StackPanel Margin="10">
<GroupBox Header="Opciones de documentación">
<StackPanel Margin="5">
<CheckBox Content="Incluir métodos privados"
IsChecked="{Binding Settings.IncludePrivateMembers}"
Margin="0,5"/>
<CheckBox Content="Incluir miembros heredados"
IsChecked="{Binding Settings.IncludeInheritedMembers}"
Margin="0,5"/>
<CheckBox Content="Incluir ejemplos de código"
IsChecked="{Binding Settings.IncludeExamples}"
Margin="0,5"/>
<CheckBox Content="Procesamiento detallado de comentarios XML"
IsChecked="{Binding Settings.DetailedXmlComments}"
Margin="0,5"/>
</StackPanel>
</GroupBox>
<GroupBox Header="Nivel de detalle" Margin="0,10,0,0">
<StackPanel Margin="5">
<RadioButton Content="Básico - Solo información esencial"
IsChecked="{Binding Settings.DetailLevel, Converter={StaticResource EnumBooleanConverter}, ConverterParameter=Basic}"
GroupName="DetailLevel"
Margin="0,5"/>
<RadioButton Content="Estándar - Equilibrio entre detalle y tamaño"
IsChecked="{Binding Settings.DetailLevel, Converter={StaticResource EnumBooleanConverter}, ConverterParameter=Standard}"
GroupName="DetailLevel"
Margin="0,5"/>
<RadioButton Content="Completo - Toda la información disponible"
IsChecked="{Binding Settings.DetailLevel, Converter={StaticResource EnumBooleanConverter}, ConverterParameter=Full}"
GroupName="DetailLevel"
Margin="0,5"/>
</StackPanel>
</GroupBox>
<GroupBox Header="Formato de salida" Margin="0,10,0,0">
<StackPanel Margin="5">
<RadioButton Content="JSON"
IsChecked="{Binding Settings.OutputFormat, Converter={StaticResource EnumBooleanConverter}, ConverterParameter=Json}"
GroupName="OutputFormat"
Margin="0,5"/>
<RadioButton Content="YAML"
IsChecked="{Binding Settings.OutputFormat, Converter={StaticResource EnumBooleanConverter}, ConverterParameter=Yaml}"
GroupName="OutputFormat"
Margin="0,5"/>
</StackPanel>
</GroupBox>
</StackPanel>
</ScrollViewer>
</TabItem>
<TabItem Header="Previsualización" IsEnabled="{Binding HasGeneratedDocumentation}">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Margin="0,0,0,10">
<Button Content="Copiar al portapapeles"
Command="{Binding CopyToClipboardCommand}"
Padding="10,5"
Margin="0,0,10,0"
IsEnabled="{Binding HasGeneratedDocumentation}"/>
<Button Content="Exportar..."
Command="{Binding ExportDocumentationCommand}"
Padding="10,5"
IsEnabled="{Binding HasGeneratedDocumentation}"/>
</StackPanel>
<!-- Eliminamos el PropertyGrid que estaba en conflicto con el Border -->
<Border Grid.Row="1" Background="#f5f5f5" BorderBrush="#ddd" BorderThickness="1">
<TextBox Text="{Binding DocumentationPreview, Mode=OneWay}"
IsReadOnly="True"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto"
FontFamily="Consolas"
AcceptsReturn="True"
Padding="10"/>
</Border>
<TextBlock Grid.Row="2"
Text="{Binding DocumentationStats}"
Margin="0,10,0,0"/>
</Grid>
</TabItem>
</TabControl>
<!-- Pie de página -->
<StatusBar Grid.Row="2">
<StatusBarItem>
<TextBlock Text="{Binding StatusMessage}"/>
</StatusBarItem>
<StatusBarItem HorizontalAlignment="Right">
<ProgressBar Width="100" Height="15" IsIndeterminate="{Binding IsProcessing}"/>
</StatusBarItem>
</StatusBar>
</Grid>
</Window>