Ejemplo n.º 1
0
        // ReSharper disable once IdentifierTypo
        public string[] Select(string[] items, string[]?previews, string[]?descs, string title, bool many)
        {
            List <int> result;

            var previewPaths = new List <string>();

            if (previews != null)
            {
                previewPaths = previews
                               .Select(preview => _omod.GetDataFile(preview))
                               .Select(file => file.GetFileInFolder(_srd.DataFolder))
                               .ToList();
            }

            if (_settings.UseBitmapOverloads)
            {
                var bitmapPreviews = new List <Bitmap>();

                if (previews != null)
                {
                    bitmapPreviews = previewPaths
                                     .Select(x => new Bitmap(x))
                                     .ToList();
                }

                result = ExternalScriptFunctions
                         .Select(items, title, many, bitmapPreviews, descs ?? Array.Empty <string>())
                         .ToList();

                foreach (var bitmap in bitmapPreviews)
                {
                    bitmap.Dispose();
                }
            }
            else
            {
                result = ExternalScriptFunctions
                         .Select(items, title, many, previewPaths, descs ?? Array.Empty <string>())
                         .ToList();
            }

            return(result
                   .Select(x => items[x])
                   .Select(x =>
            {
                //removing the pipe from the item if present
                if (x[0] == '|')
                {
                    x = x[1..];
                }