Skip to content

Commit d2a20b6

Browse files
authored
Merge pull request #932 from VladiStep/textureReferences
Improved sprite texture entries removing.
2 parents 8d8f186 + 1a5568d commit d2a20b6

6 files changed

+44
-8
lines changed

UndertaleModTool/Controls/UndertaleObjectReference.xaml

+6-3
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@
1212
<ColumnDefinition Width="Auto"/>
1313
<ColumnDefinition Width="Auto"/>
1414
</Grid.ColumnDefinitions>
15-
<TextBox Grid.Column="0" IsReadOnly="True" Cursor="Arrow" ToolTip="This is an object reference. Drag and drop an object of matching type from the tree on the left to change it!" AllowDrop="True" PreviewDragOver="TextBox_DragOver" PreviewDrop="TextBox_Drop" PreviewMouseDoubleClick="TextBox_MouseDoubleClick" Text="{Binding ObjectReference, RelativeSource={RelativeSource AncestorType=UserControl}}"/>
16-
<Button Grid.Column="1" Click="Details_Click">
15+
<TextBox Grid.Column="0" Name="ObjectText" IsReadOnly="True" Cursor="Arrow" AllowDrop="True"
16+
ToolTip="This is an object reference. Drag and drop an object of matching type from the tree on the left to change it!"
17+
PreviewDragOver="TextBox_DragOver" PreviewDrop="TextBox_Drop" PreviewMouseDoubleClick="TextBox_MouseDoubleClick"
18+
Text="{Binding ObjectReference, RelativeSource={RelativeSource AncestorType=UserControl}}"/>
19+
<Button Grid.Column="1" Name="DetailsButton" Click="Details_Click">
1720
<Button.Style>
1821
<Style TargetType="{x:Type Button}">
1922
<Setter Property="Content" Value=" ... " />
@@ -36,7 +39,7 @@
3639
</Style>
3740
</Button.Style>
3841
</Button>
39-
<Button Grid.Column="2" Click="Remove_Click" Content=" X " ToolTip="Remove reference">
42+
<Button Grid.Column="2" Name="RemoveButton" Click="Remove_Click" Content=" X " ToolTip="Remove reference">
4043
<Button.Style>
4144
<Style TargetType="{x:Type Button}">
4245
<Style.Triggers>

UndertaleModTool/Controls/UndertaleObjectReference.xaml.cs

+5
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,11 @@ public UndertaleObjectReference()
9191
InitializeComponent();
9292
}
9393

94+
public void ClearRemoveClickHandler()
95+
{
96+
RemoveButton.Click -= Remove_Click;
97+
}
98+
9499
private void Details_Click(object sender, RoutedEventArgs e)
95100
{
96101
if (ObjectReference is null)

UndertaleModTool/Controls/UndertaleTexturePageItemDisplay.xaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<local:DataUserControl x:Class="UndertaleModTool.UndertaleTexturePageItemDisplay"
1+
<UserControl x:Class="UndertaleModTool.UndertaleTexturePageItemDisplay"
22
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -21,4 +21,4 @@
2121
</Border.Background>
2222
</Border>
2323
</Canvas>
24-
</local:DataUserControl>
24+
</UserControl>

UndertaleModTool/Controls/UndertaleTexturePageItemDisplay.xaml.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ namespace UndertaleModTool
2020
/// <summary>
2121
/// Logika interakcji dla klasy UndertaleTexturePageItemDisplay.xaml
2222
/// </summary>
23-
public partial class UndertaleTexturePageItemDisplay : DataUserControl
23+
public partial class UndertaleTexturePageItemDisplay : UserControl
2424
{
2525
public UndertaleTexturePageItemDisplay()
2626
{

UndertaleModTool/Editors/UndertaleSpriteEditor.xaml

+8-2
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,10 @@
105105
</Grid>
106106

107107
<TextBlock Grid.Row="10" Grid.Column="0" Margin="3">Textures</TextBlock>
108-
<DataGrid Grid.Row="10" Grid.Column="1" Margin="3" ItemsSource="{Binding Textures, Mode=OneWay}" Name="TextureList" AutoGenerateColumns="False" CanUserAddRows="True" CanUserDeleteRows="True" HorizontalGridLinesBrush="LightGray" VerticalGridLinesBrush="LightGray" HeadersVisibility="None" SelectionMode="Single" SelectionUnit="FullRow" IsSynchronizedWithCurrentItem="True">
108+
<DataGrid Grid.Row="10" Grid.Column="1" Margin="3" ItemsSource="{Binding Textures, Mode=OneWay}" Name="TextureList"
109+
AutoGenerateColumns="False" CanUserAddRows="True" CanUserDeleteRows="True"
110+
HorizontalGridLinesBrush="LightGray" VerticalGridLinesBrush="LightGray"
111+
HeadersVisibility="None" SelectionMode="Single" SelectionUnit="FullRow" IsSynchronizedWithCurrentItem="True">
109112
<DataGrid.Resources>
110113
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FF26A0DA"/>
111114
<Style TargetType="{x:Type DataGridCell}">
@@ -135,7 +138,10 @@
135138
<DataGridTemplateColumn Width="*">
136139
<DataGridTemplateColumn.CellTemplate>
137140
<DataTemplate>
138-
<local:UndertaleObjectReference Margin="20,0,0,0" ObjectReference="{Binding Texture, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ObjectType="{x:Type undertale:UndertaleTexturePageItem}" CanRemove="False"/>
141+
<local:UndertaleObjectReference Margin="20,0,0,0" CanRemove="True"
142+
Loaded="UndertaleObjectReference_Loaded"
143+
ObjectReference="{Binding Texture, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
144+
ObjectType="{x:Type undertale:UndertaleTexturePageItem}"/>
139145
</DataTemplate>
140146
</DataGridTemplateColumn.CellTemplate>
141147
</DataGridTemplateColumn>

UndertaleModTool/Editors/UndertaleSpriteEditor.xaml.cs

+22
Original file line numberDiff line numberDiff line change
@@ -193,5 +193,27 @@ private void MaskExport_Click(object sender, RoutedEventArgs e)
193193
}
194194
}
195195
}
196+
197+
private void UndertaleObjectReference_Loaded(object sender, RoutedEventArgs e)
198+
{
199+
var objRef = sender as UndertaleObjectReference;
200+
201+
objRef.ClearRemoveClickHandler();
202+
objRef.RemoveButton.Click += Remove_Click_Override;
203+
objRef.RemoveButton.ToolTip = "Remove texture entry";
204+
objRef.RemoveButton.IsEnabled = true;
205+
objRef.DetailsButton.ToolTip = "Open texture entry";
206+
objRef.ObjectText.PreviewKeyDown += ObjectText_PreviewKeyDown;
207+
}
208+
private void ObjectText_PreviewKeyDown(object sender, KeyEventArgs e)
209+
{
210+
if (e.Key == Key.Delete)
211+
Remove_Click_Override(sender, null);
212+
}
213+
private void Remove_Click_Override(object sender, RoutedEventArgs e)
214+
{
215+
if (DataContext is UndertaleSprite sprite && (sender as FrameworkElement).DataContext is UndertaleSprite.TextureEntry entry)
216+
sprite.Textures.Remove(entry);
217+
}
196218
}
197219
}

0 commit comments

Comments
 (0)