Pause preview while adding effects

This commit is contained in:
Jaex 2017-09-23 16:17:21 +03:00
parent 2d8f124461
commit 20140c7b8f

View file

@ -42,6 +42,7 @@ public partial class ImageEffectsForm : Form
public int SelectedPresetIndex { get; private set; } public int SelectedPresetIndex { get; private set; }
private bool ignorePresetsSelectedIndexChanged = false; private bool ignorePresetsSelectedIndexChanged = false;
private bool pauseUpdate = false;
public ImageEffectsForm(Image img, List<ImageEffectPreset> presets, int selectedPresetIndex) public ImageEffectsForm(Image img, List<ImageEffectPreset> presets, int selectedPresetIndex)
{ {
@ -165,31 +166,33 @@ private void AddPreset(ImageEffectPreset preset)
cbPresets.SelectedIndex = cbPresets.Items.Count - 1; cbPresets.SelectedIndex = cbPresets.Items.Count - 1;
LoadPreset(preset); LoadPreset(preset);
txtPresetName.Focus(); txtPresetName.Focus();
UpdatePreview();
} }
} }
private void UpdatePreview() private void UpdatePreview()
{ {
ImageEffectPreset preset = GetSelectedPreset(); if (!pauseUpdate)
if (preset != null && DefaultImage != null)
{ {
Stopwatch timer = Stopwatch.StartNew(); ImageEffectPreset preset = GetSelectedPreset();
using (Image preview = ApplyEffects()) if (preset != null && DefaultImage != null)
{ {
if (preview != null) Stopwatch timer = Stopwatch.StartNew();
using (Image preview = ApplyEffects())
{ {
pbResult.LoadImage(preview); if (preview != null)
Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms, {
preview.Width, preview.Height, timer.ElapsedMilliseconds); pbResult.LoadImage(preview);
} Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms,
else preview.Width, preview.Height, timer.ElapsedMilliseconds);
{ }
pbResult.Reset(); else
Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms, {
0, 0, timer.ElapsedMilliseconds); pbResult.Reset();
Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms,
0, 0, timer.ElapsedMilliseconds);
}
} }
} }
} }
@ -224,6 +227,7 @@ private void tsmiEffectClick(object sender, EventArgs e)
{ {
Type type = (Type)tsmi.Tag; Type type = (Type)tsmi.Tag;
ImageEffect imageEffect = (ImageEffect)Activator.CreateInstance(type); ImageEffect imageEffect = (ImageEffect)Activator.CreateInstance(type);
// TODO: Order
preset.Effects.Add(imageEffect); preset.Effects.Add(imageEffect);
AddEffect(imageEffect); AddEffect(imageEffect);
UpdatePreview(); UpdatePreview();
@ -233,15 +237,19 @@ private void tsmiEffectClick(object sender, EventArgs e)
private void RemoveSelectedEffects() private void RemoveSelectedEffects()
{ {
if (lvEffects.SelectedItems.Count > 0) ImageEffectPreset preset = GetSelectedPreset();
{
// TODO
foreach (ListViewItem lvi in lvEffects.SelectedItems)
{
lvi.Remove();
}
UpdatePreview(); if (preset != null)
{
int index = lvEffects.SelectedIndex;
if (index > -1)
{
preset.Effects.RemoveAt(index);
lvEffects.Items.RemoveAt(index);
UpdatePreview();
}
} }
} }
@ -273,16 +281,25 @@ private void AddEffect(ImageEffect imageEffect)
private void LoadPreset(ImageEffectPreset preset) private void LoadPreset(ImageEffectPreset preset)
{ {
txtPresetName.Text = preset.Name; try
lvEffects.Items.Clear();
pgSettings.SelectedObject = null;
foreach (ImageEffect imageEffect in preset.Effects)
{ {
AddEffect(imageEffect); pauseUpdate = true;
txtPresetName.Text = preset.Name;
lvEffects.Items.Clear();
pgSettings.SelectedObject = null;
foreach (ImageEffect imageEffect in preset.Effects)
{
AddEffect(imageEffect);
}
} }
finally
{
pauseUpdate = false;
}
UpdatePreview();
} }
#region Form events #region Form events
@ -385,6 +402,7 @@ private void btnDuplicate_Click(object sender, EventArgs e)
private void lvEffects_ItemMoved(object sender, int oldIndex, int newIndex) private void lvEffects_ItemMoved(object sender, int oldIndex, int newIndex)
{ {
// TODO: Order
UpdatePreview(); UpdatePreview();
} }