Support singleton in image effects form

This commit is contained in:
Jaex 2020-06-16 04:40:57 +03:00
parent 059e22e0d8
commit 8a6d06b21d
2 changed files with 28 additions and 5 deletions

View file

@ -35,6 +35,10 @@ namespace ShareX.ImageEffectsLib
{
public partial class ImageEffectsForm : Form
{
public static bool IsInstanceActive => instance != null && !instance.IsDisposed;
private static ImageEffectsForm instance;
public event Action<Bitmap> ImageProcessRequested;
public bool AutoGeneratePreviewImage { get; set; }
@ -67,6 +71,18 @@ public ImageEffectsForm(Bitmap bmp, List<ImageEffectPreset> presets, int selecte
eiImageEffects.ObjectType = typeof(ImageEffectPreset);
eiImageEffects.SerializationBinder = new TypeNameSerializationBinder("ShareX.ImageEffectsLib", "ShareX.ImageEffectsLib");
AddAllEffectsToContextMenu();
LoadSettings();
}
public static ImageEffectsForm GetFormInstance(List<ImageEffectPreset> presets, int selectedPresetIndex)
{
if (!IsInstanceActive)
{
instance = new ImageEffectsForm(null, presets, selectedPresetIndex);
}
return instance;
}
public void EnableToolMode(Action<Bitmap> imageProcessRequested, string filePath = null)
@ -419,7 +435,6 @@ private void LoadPreset(ImageEffectPreset preset)
private void ImageEffectsForm_Shown(object sender, EventArgs e)
{
LoadSettings();
this.ForceActivate();
}

View file

@ -813,11 +813,19 @@ private void chkShowImageEffectsWindowAfterCapture_CheckedChanged(object sender,
private void btnImageEffects_Click(object sender, EventArgs e)
{
using (ImageEffectsForm imageEffectsForm = new ImageEffectsForm(null, TaskSettings.ImageSettings.ImageEffectPresets,
TaskSettings.ImageSettings.SelectedImageEffectPreset))
bool firstInstance = !ImageEffectsForm.IsInstanceActive;
ImageEffectsForm imageEffectsForm = ImageEffectsForm.GetFormInstance(TaskSettings.ImageSettings.ImageEffectPresets,
TaskSettings.ImageSettings.SelectedImageEffectPreset);
if (firstInstance)
{
imageEffectsForm.ShowDialog();
TaskSettings.ImageSettings.SelectedImageEffectPreset = imageEffectsForm.SelectedPresetIndex;
imageEffectsForm.FormClosed += (sender2, e2) => TaskSettings.ImageSettings.SelectedImageEffectPreset = imageEffectsForm.SelectedPresetIndex;
imageEffectsForm.Show();
}
else
{
imageEffectsForm.ForceActivate();
}
}