Skip to content

Commit

Permalink
Add search function when editing GMD + version bump
Browse files Browse the repository at this point in the history
  • Loading branch information
Fusion86 committed Sep 25, 2018
1 parent dc4d296 commit 58c1317
Show file tree
Hide file tree
Showing 8 changed files with 156 additions and 76 deletions.
2 changes: 1 addition & 1 deletion Cirilla.Core/Cirilla.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Version>0.6.0.0</Version>
<Version>0.6.1.0</Version>
<Authors>Fusion86</Authors>
<Company />
</PropertyGroup>
Expand Down
7 changes: 7 additions & 0 deletions Cirilla/Cirilla.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@
</Compile>
<Compile Include="SettingBindingExtension.cs" />
<Compile Include="Spacing.cs" />
<Compile Include="UserControls\GMDEditor.xaml.cs">
<DependentUpon>GMDEditor.xaml</DependentUpon>
</Compile>
<Compile Include="UserControls\ITMItemEditor.xaml.cs">
<DependentUpon>ITMItemEditor.xaml</DependentUpon>
</Compile>
Expand Down Expand Up @@ -125,6 +128,10 @@
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Page Include="UserControls\GMDEditor.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="UserControls\ITMItemEditor.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
Expand Down
70 changes: 1 addition & 69 deletions Cirilla/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,12 @@
xmlns:root="clr-namespace:Cirilla"
xmlns:vm="clr-namespace:Cirilla.ViewModels"
xmlns:uc="clr-namespace:Cirilla.UserControls"
xmlns:convert="clr-namespace:Cirilla.Converters"
mc:Ignorable="d"
Title="Cirilla Toolkit" Height="450" Width="800">
<Window.DataContext>
<vm:MainWindowViewModel x:Name="vm"/>
</Window.DataContext>

<Window.Resources>
<convert:InverseBooleanConverter x:Key="InverseBooleanConverter"/>
</Window.Resources>

<DockPanel>
<Menu DockPanel.Dock="Top" Background="White">
<MenuItem Header="File">
Expand All @@ -40,70 +35,7 @@
<root:BindingProxy x:Key="proxy" Data="{Binding}" />

<DataTemplate DataType="{x:Type vm:GMDViewModel}">
<TabControl Margin="5">
<TabItem Header="Header">
<DataGrid ItemsSource="{Binding HeaderMetadata}" ColumnWidth="*" AutoGenerateColumns="False" BorderThickness="0" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Key" Binding="{Binding Key}" IsReadOnly="True"/>
<DataGridTextColumn Header="Value" Binding="{Binding Value}" IsReadOnly="True"/>
<!--<DataGridTemplateColumn Header="Frozen" Width="60">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding ValueFrozen}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>-->
</DataGrid.Columns>
</DataGrid>
</TabItem>

<TabItem Header="Entries">
<DataGrid ItemsSource="{Binding Entries}" ColumnWidth="*" AutoGenerateColumns="False" BorderThickness="0" CanUserDeleteRows="{root:SettingBinding UnsafeModeEnabled}" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Index" Binding="{Binding Index}" IsReadOnly="True" Width="50"/>
<DataGridTextColumn Header="Key" Binding="{Binding Key}" IsReadOnly="{root:SettingBinding UnsafeModeEnabled, Converter={StaticResource InverseBooleanConverter}}"/>
<DataGridTextColumn Header="Value" Binding="{Binding Value}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="AcceptsReturn" Value="true" />
</Style>
</DataGridTextColumn.EditingElementStyle>

<!--<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding Key}" Value="">
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="Focusable" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>-->
</DataGridTextColumn>
</DataGrid.Columns>

<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Value}" Value="Invalid Message">
<Setter Property="Background" Value="Yellow"/>
</DataTrigger>
<DataTrigger Binding="{Binding Key}" Value="">
<Setter Property="Background" Value="Orange"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>

<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Add Normal entry (with key)" Command="{Binding AddEntryCommand}"/>
<MenuItem Header="Add Padding entry (no key)" Command="{Binding AddEntryNoKeyCommand}"/>
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>
</TabItem>
</TabControl>
<uc:GMDEditor Margin="5" DataContext="{Binding}"/>
</DataTemplate>

<DataTemplate DataType="{x:Type vm:ITMViewModel}">
Expand Down
12 changes: 6 additions & 6 deletions Cirilla/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Cirilla")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("Cirilla Toolkit")]
[assembly: AssemblyDescription("View and edit certain Monster Hunter World files in a frontend for the Cirilla.Core library.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Cirilla")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyProduct("Cirilla Toolkit")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Expand Down Expand Up @@ -51,5 +51,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.5.0.0")]
[assembly: AssemblyFileVersion("0.5.0.0")]
[assembly: AssemblyVersion("0.6.0.0")]
[assembly: AssemblyFileVersion("0.6.0.0")]
81 changes: 81 additions & 0 deletions Cirilla/UserControls/GMDEditor.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<UserControl x:Class="Cirilla.UserControls.GMDEditor"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:root="clr-namespace:Cirilla"
xmlns:convert="clr-namespace:Cirilla.Converters"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<convert:InverseBooleanConverter x:Key="InverseBooleanConverter"/>
</UserControl.Resources>

<TabControl>
<TabItem Header="Header">
<DataGrid ItemsSource="{Binding HeaderMetadata}" ColumnWidth="*" AutoGenerateColumns="False" BorderThickness="0" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Key" Binding="{Binding Key}" IsReadOnly="True"/>
<DataGridTextColumn Header="Value" Binding="{Binding Value}" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
</TabItem>

<TabItem Header="Entries">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>

<Grid Grid.Row="0" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<TextBlock Grid.Column="0" Text="Search: "/>
<TextBox Grid.Column="1" Text="{Binding SearchQuery, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}">
<TextBox.InputBindings>
<KeyBinding Key="Return" Command="{Binding TriggerSearchCommand}"/>
</TextBox.InputBindings>
</TextBox>
</Grid>

<DataGrid Grid.Row="1" ItemsSource="{Binding FilteredEntries}" ColumnWidth="*" AutoGenerateColumns="False" BorderThickness="0" CanUserDeleteRows="{root:SettingBinding UnsafeModeEnabled}" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Index" Binding="{Binding Index}" IsReadOnly="True" Width="50"/>
<DataGridTextColumn Header="Key" Binding="{Binding Key}" IsReadOnly="{root:SettingBinding UnsafeModeEnabled, Converter={StaticResource InverseBooleanConverter}}"/>
<DataGridTextColumn Header="Value" Binding="{Binding Value}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="AcceptsReturn" Value="true" />
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>

<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Value}" Value="Invalid Message">
<Setter Property="Background" Value="Yellow"/>
</DataTrigger>
<DataTrigger Binding="{Binding Key}" Value="">
<Setter Property="Background" Value="Orange"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>

<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Add Normal entry (with key)" Command="{Binding AddEntryCommand}"/>
<MenuItem Header="Add Padding entry (no key)" Command="{Binding AddEntryNoKeyCommand}"/>
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>
</Grid>
</TabItem>
</TabControl>
</UserControl>
28 changes: 28 additions & 0 deletions Cirilla/UserControls/GMDEditor.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Cirilla.UserControls
{
/// <summary>
/// Interaction logic for GMDEditor.xaml
/// </summary>
public partial class GMDEditor : UserControl
{
public GMDEditor()
{
InitializeComponent();
}
}
}
6 changes: 6 additions & 0 deletions Cirilla/ViewModels/FileTypeTabItemViewModelBase.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Microsoft.Win32;
using System.ComponentModel;
using System.IO;
using System.Runtime.CompilerServices;

namespace Cirilla.ViewModels
{
Expand Down Expand Up @@ -33,5 +34,10 @@ protected FileTypeTabItemViewModelBase(string path)
{
Filepath = path;
}

protected void NotifyPropertyChanged([CallerMemberName] string name = null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
}
26 changes: 26 additions & 0 deletions Cirilla/ViewModels/GMDViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
using System;
using System.Collections.ObjectModel;
using System.Windows;
using System.ComponentModel;
using System.Windows.Data;

namespace Cirilla.ViewModels
{
Expand All @@ -11,8 +13,12 @@ public class GMDViewModel : FileTypeTabItemViewModelBase
public ObservableCollection<KeyValueViewModel> HeaderMetadata { get; } = new ObservableCollection<KeyValueViewModel>();
public ObservableCollection<GMDEntryViewModel> Entries { get; } = new ObservableCollection<GMDEntryViewModel>();

public string SearchQuery { get; set; }
public ICollectionView FilteredEntries { get; }

public RelayCommand AddEntryCommand { get; }
public RelayCommand AddEntryNoKeyCommand { get; }
public RelayCommand TriggerSearchCommand { get; }

private GMD _context;

Expand All @@ -23,6 +29,7 @@ public GMDViewModel(string path) : base(path)
// Commands
AddEntryCommand = new RelayCommand(AddEntry, IsUnsafeModeEnabled);
AddEntryNoKeyCommand = new RelayCommand(AddEntryNoKey, IsUnsafeModeEnabled);
TriggerSearchCommand = new RelayCommand(TriggerSearch, () => true);

// Header metadata
HeaderMetadata.Add(new KeyValueViewModel("Version", "0x" + _context.Header.Version.ToHexString()));
Expand All @@ -37,6 +44,10 @@ public GMDViewModel(string path) : base(path)
// Entries
for (int i = 0; i < _context.Entries.Count; i++)
Entries.Add(new GMDEntryViewModel(i, _context.Entries[i]));

// Filtered Entries CollectionViewSource
FilteredEntries = CollectionViewSource.GetDefaultView(Entries);
FilteredEntries.Filter = Entries_Filter;
}

public override void Save(string path)
Expand Down Expand Up @@ -80,5 +91,20 @@ public void AddEntryNoKey()
}

public bool IsUnsafeModeEnabled() => Properties.Settings.Default.Config.UnsafeModeEnabled;

public void TriggerSearch()
{
FilteredEntries.Refresh();
NotifyPropertyChanged(nameof(FilteredEntries));
}

private bool Entries_Filter(object obj)
{
if (string.IsNullOrEmpty(SearchQuery))
return true;

GMDEntryViewModel entry = obj as GMDEntryViewModel;
return entry.Value.IndexOf(SearchQuery, StringComparison.InvariantCultureIgnoreCase) != -1;
}
}
}

0 comments on commit 58c1317

Please sign in to comment.