285 lines
17 KiB
XML
285 lines
17 KiB
XML
<Window xmlns="https://github.com/avaloniaui"
|
|
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:ops="clr-namespace:BFR.Operations;assembly=BFR"
|
|
mc:Ignorable="d" MinWidth="720" MinHeight="480"
|
|
x:Class="BFR.MainWindow"
|
|
Title="BFR">
|
|
|
|
<Grid RowDefinitions="auto,auto,*" ColumnDefinitions="*,*,*" Classes="StyleBorders">
|
|
<!-- Directory Selection + Filters -->
|
|
<Border Grid.Row="0" Grid.ColumnSpan="3">
|
|
<Grid RowDefinitions="*,auto" ColumnDefinitions="auto,*,auto">
|
|
<Expander Grid.Column="0" Name="FilterExpander" Header="Filter"/>
|
|
<TextBox Grid.Column="1" IsEnabled="False" Text="{Binding WorkingDirectory}"/>
|
|
<Button Grid.Column="2" Content=" ... " Command="{Binding OpenDirectoryButtonClick}"/>
|
|
|
|
<!-- Filters -->
|
|
<Grid Grid.Row="1" Grid.ColumnSpan="3" ColumnDefinitions="auto,*,auto,*,auto,auto,auto,auto" IsVisible="{Binding #FilterExpander.IsExpanded}">
|
|
<TextBlock Grid.Column="0" Text="Extension:"/>
|
|
<TextBox Grid.Column="1" Text="{Binding FilterExtension}" PropertyChanged="FilterChanged"/>
|
|
<TextBlock Grid.Column="2" Text="Name:"/>
|
|
<TextBox Grid.Column="3" Text="{Binding FilterPattern}" PropertyChanged="FilterChanged"/>
|
|
<TextBlock Grid.Column="4" Text="Full Name:"/>
|
|
<CheckBox Grid.Column="5" IsChecked="{Binding FilterFullName}" PropertyChanged="FilterChanged"/>
|
|
<TextBlock Grid.Column="6" Text="Regex:"/>
|
|
<CheckBox Grid.Column="7" IsChecked="{Binding FilterRegex}" PropertyChanged="FilterChanged" Margin="4,4,5,4"/>
|
|
</Grid>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- ListBox Headers -->
|
|
<TextBox Classes="HeaderTextBox" Grid.Row="1" Grid.Column="0" Text="Before"/>
|
|
<TextBox Classes="HeaderTextBox" Grid.Row="1" Grid.Column="1" Text="Operations"/>
|
|
<TextBox Classes="HeaderTextBox" Grid.Row="1" Grid.Column="2" Text="After"/>
|
|
|
|
<!-- Current and Preview ListBoxes -->
|
|
<ListBox Grid.Row="2" Grid.Column="0" Items="{Binding Files}" IsEnabled="False">
|
|
<ListBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding OldFullName}"/>
|
|
</DataTemplate>
|
|
</ListBox.ItemTemplate>
|
|
</ListBox>
|
|
<ListBox Grid.Row="2" Grid.Column="2" Items="{Binding Files}" IsEnabled="False">
|
|
<ListBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding FullName}"/>
|
|
</DataTemplate>
|
|
</ListBox.ItemTemplate>
|
|
</ListBox>
|
|
|
|
<!-- Middle Section (Operations, Controls) -->
|
|
<Grid Grid.Row="2" Grid.Column="1" RowDefinitions="*,auto,auto" Classes="StyleBorders">
|
|
<!-- Operations ListBox -->
|
|
<ListBox Grid.Row="0" Items="{Binding Operations}" Name="OperationsListBox" SelectedIndex="{Binding SelectedOperation}"/>
|
|
|
|
<!-- Operations Controls -->
|
|
<Border Grid.Row="1" Classes="ConnectUp">
|
|
<Grid ColumnDefinitions="auto,*,auto,auto,auto">
|
|
<TextBlock Grid.Column="0" Text="New:"/>
|
|
<ComboBox Grid.Column="1" Items="{Binding OperationTypes}" SelectedIndex="{Binding SelectedOperationType}"/>
|
|
<Button Grid.Column="2" Content=" + " Command="{Binding AddOperation}"/>
|
|
<Button Grid.Column="3" Content=" - " Command="{Binding RemoveOperation}"/>
|
|
<ButtonSpinner Grid.Column="4" Spin="MoveOperation"/>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- Commit and Undo Buttons -->
|
|
<Border Grid.Row="2" Classes="ConnectUp">
|
|
<Grid ColumnDefinitions="*,*">
|
|
<Button Grid.Column="0" Content="Undo" Command="{Binding Undo}" IsEnabled="{Binding !!UndoCount}"/>
|
|
<Button Grid.Column="1" Content="Rename All" Command="{Binding Commit}" IsEnabled="{Binding IsCommitButtonEnabled}"/>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<Window.Styles>
|
|
<!-- General Styling-->
|
|
<Style Selector="Grid > Expander">
|
|
<Setter Property="Margin" Value="4"/>
|
|
</Style>
|
|
<Style Selector="Grid > ListBox">
|
|
<Setter Property="Margin" Value="4"/>
|
|
</Style>
|
|
<Style Selector="Grid > TextBox">
|
|
<Setter Property="Margin" Value="4"/>
|
|
<Setter Property="Grid.Column" Value="1"/>
|
|
</Style>
|
|
<Style Selector="Grid > Button">
|
|
<Setter Property="Margin" Value="4"/>
|
|
<Setter Property="Grid.Column" Value="1"/>
|
|
</Style>
|
|
<Style Selector="Grid > ButtonSpinner">
|
|
<Setter Property="Margin" Value="4"/>
|
|
<Setter Property="Grid.Column" Value="1"/>
|
|
</Style>
|
|
<Style Selector="Grid > ComboBox">
|
|
<Setter Property="Margin" Value="4"/>
|
|
<Setter Property="Grid.Column" Value="1"/>
|
|
</Style>
|
|
<Style Selector="Grid > NumericUpDown">
|
|
<Setter Property="Margin" Value="4"/>
|
|
<Setter Property="Grid.Column" Value="1"/>
|
|
</Style>
|
|
<Style Selector="Grid > CheckBox">
|
|
<Setter Property="Margin" Value="4"/>
|
|
<Setter Property="Grid.Column" Value="1"/>
|
|
</Style>
|
|
<Style Selector="Grid > TextBlock">
|
|
<Setter Property="Margin" Value="8"/>
|
|
<Setter Property="Grid.Column" Value="0"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
<Style Selector="Grid > TextBox.HeaderTextBox">
|
|
<Setter Property="Margin" Value="4,4,4,-5"/>
|
|
<Setter Property="TextAlignment" Value="Center"/>
|
|
<Setter Property="FontWeight" Value="Bold"/>
|
|
</Style>
|
|
<Style Selector="Grid.StyleBorders > Border">
|
|
<Setter Property="Margin" Value="4"/>
|
|
<Setter Property="Padding" Value="4"/>
|
|
<Setter Property="BorderBrush" Value="Gray"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
</Style>
|
|
<Style Selector="Border.ConnectUp">
|
|
<Setter Property="Margin" Value="4,-5,4,4"/>
|
|
</Style>
|
|
|
|
<!-- Operation Styles -->
|
|
<Style Selector="Expander.OperationExpander">
|
|
<Setter Property="Header">
|
|
<Template>
|
|
<Grid ColumnDefinitions="auto,*,auto">
|
|
<CheckBox Grid.Column="0" Margin="0,0,8,0" IsChecked="{Binding IsEnabled}" Command="{Binding $parent[6].DataContext.Preview}"/>
|
|
<TextBlock Grid.Column="1" Margin="0,0,8,0" Text="{Binding Name}"/>
|
|
<Grid Grid.Column="2" ToolTip.Tip="{Binding Error}" IsVisible="{Binding !!Error.Length}">
|
|
<Ellipse Width="18" Height="18" Margin="0" Stroke="DarkRed" StrokeThickness="2"/>
|
|
<TextBlock Width="18" Height="18" Margin="0" Foreground="DarkRed" Text="!" FontWeight="Black" TextAlignment="Center"/>
|
|
</Grid>
|
|
</Grid>
|
|
</Template>
|
|
</Setter>
|
|
</Style>
|
|
</Window.Styles>
|
|
|
|
<Window.DataTemplates>
|
|
<!-- Operation Type (For the selector) -->
|
|
<DataTemplate DataType="{x:Type ops:OperationType}">
|
|
<TextBlock Text="{Binding Name}"/>
|
|
</DataTemplate>
|
|
|
|
<!-- Operations -->
|
|
<DataTemplate DataType="{x:Type ops:Overwrite}">
|
|
<Expander Classes="OperationExpander">
|
|
<Grid ColumnDefinitions="auto,*" RowDefinitions="*,*">
|
|
<TextBlock Grid.Row="0" Text="Replacement:"/>
|
|
<TextBox Grid.Row="0" Text="{Binding Replacement}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="1" Text="Full Name:"/>
|
|
<CheckBox Grid.Row="1" IsChecked="{Binding FullName}" PropertyChanged="PreviewChanged"/>
|
|
</Grid>
|
|
</Expander>
|
|
</DataTemplate>
|
|
<DataTemplate DataType="{x:Type ops:Remove}">
|
|
<Expander Classes="OperationExpander">
|
|
<Grid ColumnDefinitions="auto,*" RowDefinitions="auto,auto,auto,auto,auto,auto,auto,auto,auto,auto,auto">
|
|
<TextBlock Grid.Row="0" Text="Mode:"/>
|
|
<ComboBox Grid.Row="0" Items="{Binding Modes}" Name="ModeSelector" SelectedIndex="{Binding Mode}" PropertyChanged="PreviewChanged">
|
|
<ComboBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Name}"/>
|
|
</DataTemplate>
|
|
</ComboBox.ItemTemplate>
|
|
</ComboBox>
|
|
<TextBlock Grid.Row="1" Text="Pattern:" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}"/>
|
|
<TextBox Grid.Row="1" Text="{Binding Pattern}" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="2" Text="Characters:" IsVisible="{Binding #ModeSelector.SelectedItem.IsCharacters}"/>
|
|
<TextBox Grid.Row="2" Text="{Binding Characters}" IsVisible="{Binding #ModeSelector.SelectedItem.IsCharacters}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="3" Text="From N:" IsVisible="{Binding #ModeSelector.SelectedItem.IsFromNToN}"/>
|
|
<NumericUpDown Grid.Row="3" Value="{Binding FromN}" IsVisible="{Binding #ModeSelector.SelectedItem.IsFromNToN}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="4" Text="To N:" IsVisible="{Binding #ModeSelector.SelectedItem.IsFromNToN}"/>
|
|
<NumericUpDown Grid.Row="4" Value="{Binding ToN}" IsVisible="{Binding #ModeSelector.SelectedItem.IsFromNToN}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="5" Text="First N:" IsVisible="{Binding #ModeSelector.SelectedItem.IsFirstN}"/>
|
|
<NumericUpDown Grid.Row="5" Value="{Binding FirstN}" IsVisible="{Binding #ModeSelector.SelectedItem.IsFirstN}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="6" Text="Last N:" IsVisible="{Binding #ModeSelector.SelectedItem.IsLastN}"/>
|
|
<NumericUpDown Grid.Row="6" Value="{Binding LastN}" IsVisible="{Binding #ModeSelector.SelectedItem.IsLastN}" PropertyChanged="PreviewChanged"/>
|
|
<!--TextBlock Grid.Row="7" Text="Replacement:"/>
|
|
<TextBox Grid.Row="7" Text="{Binding Replacement}" PropertyChanged="PreviewChanged"/-->
|
|
<TextBlock Grid.Row="8" Text="Regex:" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}"/>
|
|
<CheckBox Grid.Row="8" IsChecked="{Binding UseRegex}" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="9" Text="Replace Regex:" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}"/>
|
|
<CheckBox Grid.Row="9" IsChecked="{Binding UseRegexReplace}" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="10" Text="Full Name:"/>
|
|
<CheckBox Grid.Row="10" IsChecked="{Binding FullName}" PropertyChanged="PreviewChanged"/>
|
|
</Grid>
|
|
</Expander>
|
|
</DataTemplate>
|
|
<DataTemplate DataType="{x:Type ops:Replace}">
|
|
<Expander Classes="OperationExpander">
|
|
<Grid ColumnDefinitions="auto,*" RowDefinitions="auto,auto,auto,auto,auto,auto,auto,auto,auto,auto,auto">
|
|
<TextBlock Grid.Row="0" Text="Mode:"/>
|
|
<ComboBox Grid.Row="0" Items="{Binding Modes}" Name="ModeSelector" SelectedIndex="{Binding Mode}" PropertyChanged="PreviewChanged">
|
|
<ComboBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Name}"/>
|
|
</DataTemplate>
|
|
</ComboBox.ItemTemplate>
|
|
</ComboBox>
|
|
<TextBlock Grid.Row="1" Text="Pattern:" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}"/>
|
|
<TextBox Grid.Row="1" Text="{Binding Pattern}" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="2" Text="Characters:" IsVisible="{Binding #ModeSelector.SelectedItem.IsCharacters}"/>
|
|
<TextBox Grid.Row="2" Text="{Binding Characters}" IsVisible="{Binding #ModeSelector.SelectedItem.IsCharacters}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="3" Text="From N:" IsVisible="{Binding #ModeSelector.SelectedItem.IsFromNToN}"/>
|
|
<NumericUpDown Grid.Row="3" Value="{Binding FromN}" IsVisible="{Binding #ModeSelector.SelectedItem.IsFromNToN}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="4" Text="To N:" IsVisible="{Binding #ModeSelector.SelectedItem.IsFromNToN}"/>
|
|
<NumericUpDown Grid.Row="4" Value="{Binding ToN}" IsVisible="{Binding #ModeSelector.SelectedItem.IsFromNToN}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="5" Text="First N:" IsVisible="{Binding #ModeSelector.SelectedItem.IsFirstN}"/>
|
|
<NumericUpDown Grid.Row="5" Value="{Binding FirstN}" IsVisible="{Binding #ModeSelector.SelectedItem.IsFirstN}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="6" Text="Last N:" IsVisible="{Binding #ModeSelector.SelectedItem.IsLastN}"/>
|
|
<NumericUpDown Grid.Row="6" Value="{Binding LastN}" IsVisible="{Binding #ModeSelector.SelectedItem.IsLastN}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="7" Text="Replacement:"/>
|
|
<TextBox Grid.Row="7" Text="{Binding Replacement}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="8" Text="Regex:" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}"/>
|
|
<CheckBox Grid.Row="8" IsChecked="{Binding UseRegex}" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="9" Text="Replace Regex:" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}"/>
|
|
<CheckBox Grid.Row="9" IsChecked="{Binding UseRegexReplace}" IsVisible="{Binding #ModeSelector.SelectedItem.IsPattern}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="10" Text="Full Name:"/>
|
|
<CheckBox Grid.Row="10" IsChecked="{Binding FullName}" PropertyChanged="PreviewChanged"/>
|
|
</Grid>
|
|
</Expander>
|
|
</DataTemplate>
|
|
<DataTemplate DataType="{x:Type ops:Number}">
|
|
<Expander Classes="OperationExpander">
|
|
<Grid ColumnDefinitions="auto,*" RowDefinitions="auto,auto,auto,auto,auto,auto,auto,auto,auto">
|
|
<TextBlock Grid.Row="0" Text="Mode:"/>
|
|
<ComboBox Grid.Row="0" Items="{Binding Modes}" Name="ModeSelector" SelectedIndex="{Binding Mode}" PropertyChanged="PreviewChanged">
|
|
<ComboBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Name}"/>
|
|
</DataTemplate>
|
|
</ComboBox.ItemTemplate>
|
|
</ComboBox>
|
|
<TextBlock Grid.Row="1" Text="Pattern:" IsVisible="{Binding #ModeSelector.SelectedItem.IsReplace}"/>
|
|
<TextBox Grid.Row="1" Text="{Binding Pattern}" IsVisible="{Binding #ModeSelector.SelectedItem.IsReplace}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="2" Text="Position:" IsVisible="{Binding #ModeSelector.SelectedItem.IsInsert}"/>
|
|
<NumericUpDown Grid.Row="2" Value="{Binding InsertPosition}" IsVisible="{Binding #ModeSelector.SelectedItem.IsInsert}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="3" Text="Start Index:"/>
|
|
<NumericUpDown Grid.Row="3" Value="{Binding StartIndex}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="4" Text="Increment:"/>
|
|
<NumericUpDown Grid.Row="4" Value="{Binding Increment}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="5" Text="Padding:"/>
|
|
<NumericUpDown Grid.Row="5" Value="{Binding Padding}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="6" Text="Auto Padding:"/>
|
|
<CheckBox Grid.Row="6" IsChecked="{Binding AutoPadding}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="7" Text="Regex:" IsVisible="{Binding #ModeSelector.SelectedItem.IsReplace}"/>
|
|
<CheckBox Grid.Row="7" IsChecked="{Binding UseRegex}" IsVisible="{Binding #ModeSelector.SelectedItem.IsReplace}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="8" Text="Full Name:" IsVisible="{Binding #ModeSelector.SelectedItem.IsReplace}"/>
|
|
<CheckBox Grid.Row="8" IsChecked="{Binding FullName}" IsVisible="{Binding #ModeSelector.SelectedItem.IsReplace}" PropertyChanged="PreviewChanged"/>
|
|
</Grid>
|
|
</Expander>
|
|
</DataTemplate>
|
|
<DataTemplate DataType="{x:Type ops:Add}">
|
|
<Expander Classes="OperationExpander">
|
|
<Grid ColumnDefinitions="auto,*" RowDefinitions="auto,auto,auto,auto">
|
|
<TextBlock Grid.Row="0" Text="Mode:"/>
|
|
<ComboBox Grid.Row="0" Items="{Binding Modes}" Name="ModeSelector" SelectedIndex="{Binding Mode}" PropertyChanged="PreviewChanged">
|
|
<ComboBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Name}"/>
|
|
</DataTemplate>
|
|
</ComboBox.ItemTemplate>
|
|
</ComboBox>
|
|
<TextBlock Grid.Row="1" Text="Position:" IsVisible="{Binding #ModeSelector.SelectedItem.IsInsert}"/>
|
|
<NumericUpDown Grid.Row="1" Value="{Binding InsertPosition}" IsVisible="{Binding #ModeSelector.SelectedItem.IsInsert}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="2" Text="Text:"/>
|
|
<TextBox Grid.Row="2" Text="{Binding Text}" PropertyChanged="PreviewChanged"/>
|
|
<TextBlock Grid.Row="3" Text="Full Name:"/>
|
|
<CheckBox Grid.Row="3" IsChecked="{Binding FullName}" PropertyChanged="PreviewChanged"/>
|
|
</Grid>
|
|
</Expander>
|
|
</DataTemplate>
|
|
</Window.DataTemplates>
|
|
</Window>
|