NetDocsForLLM/MainWindow.xaml

167 lines
9.2 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:views="clr-namespace:NetDocsForLLM.Views" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:conv="clr-namespace:NetDocsForLLM.Converters"
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="XML (Recomendado para LLMs)"
IsChecked="{Binding Settings.OutputFormat, Converter={StaticResource EnumBooleanConverter}, ConverterParameter=Xml}"
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" />
<Button Content="Exportar..." Command="{Binding ExportDocumentationCommand}" Padding="10,5" />
</StackPanel>
<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>
<!-- Nueva pestaña de Log -->
<TabItem Header="Log de Análisis">
<views:LogView />
</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>