Skip to content

Commit 2057db5

Browse files
committed
Use a drop down button for apply/save
1 parent 8545495 commit 2057db5

File tree

3 files changed

+91
-24
lines changed

3 files changed

+91
-24
lines changed

MainWindow.xaml

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -280,28 +280,40 @@
280280
Click="CancelCrop_Click"
281281
Content="Cancel Crop" />
282282
</StackPanel>
283-
<Button
284-
x:Name="ApplyButton"
285-
Margin="8,4"
286-
Click="ApplyButton_Click"
287-
Content="Apply"
288-
IsDefault="True"
289-
IsEnabled="False"
290-
ToolTip="Apply Transform" />
291-
<Button
292-
x:Name="Save"
293-
Margin="8,4"
294-
Click="Save_Click"
295-
Content="Save"
296-
IsEnabled="False"
297-
ToolTip="Apply Transform, Save, and Preview file" />
298-
<Button
283+
<wpfui:DropDownButton
284+
x:Name="ApplySaveSplitButton"
285+
Content="Apply &amp; Save"
286+
IsEnabled="False">
287+
<wpfui:DropDownButton.Flyout>
288+
<ContextMenu>
289+
<MenuItem
290+
x:Name="ApplyAndSaveMenuItem"
291+
Click="ApplySaveSplitButton_Click"
292+
Header="Apply &amp; Save"
293+
ToolTip="Apply Transform, Save, and Preview file" />
294+
<MenuItem
295+
x:Name="ApplyButton"
296+
Click="ApplyButton_Click"
297+
Header="Apply"
298+
ToolTip="Apply Transform" />
299+
<MenuItem
300+
x:Name="Save"
301+
Click="Save_Click"
302+
Header="Save"
303+
ToolTip="Apply Transform, Save, and Preview file" />
304+
</ContextMenu>
305+
</wpfui:DropDownButton.Flyout>
306+
</wpfui:DropDownButton>
307+
<wpfui:Button
299308
x:Name="OpenFolderButton"
300309
Margin="8,4"
301310
Click="OpenFolderButton_Click"
302-
Content="Open Folder"
303311
IsEnabled="False"
304-
ToolTip="Open Folder Where File Was Saved" />
312+
ToolTip="Open Folder Where File Was Saved">
313+
<wpfui:Button.Icon>
314+
<wpfui:SymbolIcon Symbol="FolderArrowRight24" />
315+
</wpfui:Button.Icon>
316+
</wpfui:Button>
305317
</StackPanel>
306318
</Grid>
307319
</Border>

MainWindow.xaml.cs

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,8 @@ private async void ApplyButton_Click(object sender, RoutedEventArgs e)
267267
SetUiForCompletedTask();
268268
}
269269

270-
private async void Save_Click(object sender, RoutedEventArgs e)
270+
271+
private async void ApplySaveSplitButton_Click(object sender, RoutedEventArgs e)
271272
{
272273
SetUiForLongTask();
273274

@@ -282,6 +283,7 @@ private async void Save_Click(object sender, RoutedEventArgs e)
282283
{
283284
BottomPane.IsEnabled = true;
284285
BottomPane.Cursor = null;
286+
SetUiForCompletedTask();
285287
return;
286288
}
287289

@@ -320,6 +322,58 @@ private async void Save_Click(object sender, RoutedEventArgs e)
320322
}
321323
}
322324

325+
private async void Save_Click(object sender, RoutedEventArgs e)
326+
{
327+
SaveFileDialog saveFileDialog = new()
328+
{
329+
Filter = "Image Files|*.jpg;",
330+
RestoreDirectory = true,
331+
FileName = $"{openedFileName}_corrected.jpg",
332+
};
333+
334+
if (saveFileDialog.ShowDialog() is not true || lines is null)
335+
{
336+
BottomPane.IsEnabled = true;
337+
BottomPane.Cursor = null;
338+
SetUiForCompletedTask();
339+
return;
340+
}
341+
342+
string correctedImageFileName = saveFileDialog.FileName;
343+
344+
if (string.IsNullOrWhiteSpace(imagePath) || string.IsNullOrWhiteSpace(correctedImageFileName))
345+
{
346+
SetUiForCompletedTask();
347+
return;
348+
}
349+
350+
MagickImage image = new(imagePath);
351+
352+
try
353+
{
354+
await image.WriteAsync(correctedImageFileName);
355+
356+
OpenFolderButton.IsEnabled = true;
357+
SaveWindow saveWindow = new(correctedImageFileName);
358+
saveWindow.Show();
359+
}
360+
catch (Exception ex)
361+
{
362+
System.Windows.MessageBox.Show(
363+
ex.Message,
364+
"Error",
365+
System.Windows.MessageBoxButton.OK,
366+
MessageBoxImage.Error);
367+
}
368+
finally
369+
{
370+
savedPath = correctedImageFileName;
371+
372+
SetUiForCompletedTask();
373+
image.Dispose();
374+
}
375+
}
376+
323377
private void SetUiForLongTask()
324378
{
325379
BottomPane.IsEnabled = false;
@@ -351,6 +405,7 @@ private async void OpenFileButton_Click(object sender, RoutedEventArgs e)
351405

352406
private async Task OpenImagePath(string imageFilePath)
353407
{
408+
ApplySaveSplitButton.IsEnabled = true;
354409
Save.IsEnabled = true;
355410
ApplyButton.IsEnabled = true;
356411
MagickImage bitmap = new(imageFilePath);
@@ -713,7 +768,7 @@ private void SquareThePolygon()
713768
private void CropImage_Click(object sender, RoutedEventArgs e)
714769
{
715770
isCropping = true;
716-
ApplyButton.Visibility = Visibility.Collapsed;
771+
ApplySaveSplitButton.Visibility = Visibility.Collapsed;
717772
CropButtonPanel.Visibility = Visibility.Visible;
718773

719774
foreach (UIElement element in _polygonElements)
@@ -725,7 +780,7 @@ private void CropImage_Click(object sender, RoutedEventArgs e)
725780
private async void ApplyCropButton_Click(object sender, RoutedEventArgs e)
726781
{
727782
CropButtonPanel.Visibility = Visibility.Collapsed;
728-
ApplyButton.Visibility = Visibility.Visible;
783+
ApplySaveSplitButton.Visibility = Visibility.Visible;
729784

730785
foreach (UIElement element in _polygonElements)
731786
element.Visibility = Visibility.Visible;
@@ -757,7 +812,7 @@ private async void ApplyCropButton_Click(object sender, RoutedEventArgs e)
757812
private void CancelCrop_Click(object sender, RoutedEventArgs e)
758813
{
759814
CropButtonPanel.Visibility = Visibility.Collapsed;
760-
ApplyButton.Visibility = Visibility.Visible;
815+
ApplySaveSplitButton.Visibility = Visibility.Visible;
761816

762817
foreach (UIElement element in _polygonElements)
763818
element.Visibility = Visibility.Visible;

ResizableRectangle.xaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
66
xmlns:local="clr-namespace:MagickCrop"
77
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
8-
Width="300"
9-
Height="300"
8+
Width="500"
9+
Height="400"
1010
Padding="50"
1111
Background="Transparent"
1212
MouseMove="UserControl_MouseMove"

0 commit comments

Comments
 (0)