97 lines
2.9 KiB
C#
97 lines
2.9 KiB
C#
using MaterialSkin.Controls;
|
|
using OpenCvSharp.XImgProc;
|
|
using System.Text.RegularExpressions;
|
|
using MaterialSkin.Core.Controls;
|
|
using OpenCvSharp.Extensions;
|
|
using VisionBuilder.UI.Common.ViewModel;
|
|
using VisionBuilder.UI.Common.ViewModel.Classes;
|
|
using VisionBuilder.UI.Common.ViewModel.Interfaces.UI;
|
|
|
|
namespace VisionBuilder.UI.Windows.Dialogs
|
|
{
|
|
public partial class RecipeSelectionDialog : MaterialForm
|
|
{
|
|
private readonly RecipeSelectionVM _recipeSelectionVm;
|
|
private readonly IRecipeCreationTool _recipeCreationTool;
|
|
|
|
public RecipeSelectionDialog(RecipeSelectionVM recipeSelectionVm, IRecipeCreationTool recipeCreationTool)
|
|
{
|
|
_recipeSelectionVm = recipeSelectionVm;
|
|
_recipeCreationTool = recipeCreationTool;
|
|
|
|
InitializeComponent();
|
|
ReloadRecipes();
|
|
|
|
if (_recipeCreationTool.Enabled)
|
|
{
|
|
btnCreateNewRecipe.Visible = true;
|
|
}
|
|
}
|
|
|
|
public void ReloadRecipes()
|
|
{
|
|
|
|
var recipes = _recipeSelectionVm.Recipes.ToList();
|
|
listView1.Items.Clear();
|
|
|
|
recipes = recipes.OrderBy(x => x.RecipeName).ToList();
|
|
listView1.LargeImageList = new ImageList() { ColorDepth = ColorDepth.Depth24Bit };
|
|
listView1.LargeImageList.ImageSize = new Size(128, 128);
|
|
|
|
var plug = new Bitmap(128, 128);
|
|
using (Graphics g = Graphics.FromImage(plug))
|
|
{
|
|
g.Clear(Color.Gray);
|
|
}
|
|
|
|
listView1.LargeImageList.Images.Add("plug", plug);
|
|
|
|
|
|
|
|
|
|
recipes.ForEach(x =>
|
|
{
|
|
|
|
|
|
|
|
if (x.Image != null)
|
|
{
|
|
var image = x.Image.Resize(new OpenCvSharp.Size(128, 128)).ToBitmap();
|
|
listView1.LargeImageList.Images.Add(x.RecipeName, image);
|
|
listView1.Items.Add(x.RecipeName, x.RecipeName, x.RecipeName).Tag = x;
|
|
}
|
|
else
|
|
{
|
|
listView1.Items.Add(x.RecipeName, x.RecipeName, "plug").Tag = x;
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
private void listView1_MouseClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (listView1.SelectedIndices.Count > 0)
|
|
{
|
|
_recipeSelectionVm.SelectedRecipe = (RecipeData)listView1.SelectedItems[0].Tag!;
|
|
}
|
|
DialogResult = DialogResult.OK;
|
|
}
|
|
|
|
|
|
private void btnCancel_Click(object sender, EventArgs e)
|
|
{
|
|
DialogResult = DialogResult.Cancel;
|
|
}
|
|
|
|
private async void btnCreateNewRecipe_Click(object sender, EventArgs e)
|
|
{
|
|
var recipeName = await _recipeCreationTool.CreateRecipeAsync();
|
|
if (recipeName != null)
|
|
{
|
|
_recipeSelectionVm.SelectedRecipe = new RecipeData() { RecipeName = recipeName };
|
|
DialogResult = DialogResult.OK;
|
|
}
|
|
}
|
|
}
|
|
}
|