mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 17:56:51 +13:00
Support singleton in image effects form
This commit is contained in:
parent
059e22e0d8
commit
8a6d06b21d
2 changed files with 28 additions and 5 deletions
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue